.\"
.\" This file and its contents are supplied under the terms of the
.\" Common Development and Distribution License ("CDDL"), version 1.0.
.\" You may only use this file in accordance with the terms of version
.\" 1.0 of the CDDL.
.\"
.\" A full copy of the text of the CDDL should have accompanied this
.\" source.  A copy of the CDDL is also available via the Internet at
.\" http://www.illumos.org/license/CDDL.
.\"
.\"
.\" Copyright 2016 Joyent, Inc.
.\"
.Dd August 2, 2018
.Dt ENDIAN.H 3HEAD
.Os
.Sh NAME
.Nm endian.h
.Nd definitions for endian routines
.Sh SYNOPSIS
.In endian.h
.Sh DESCRIPTION
The
.In endian.h
header defines functions and macros focused on converting data between
the host machines native byte order and big or little-endian values.
While the manual page details the macros defined by
.In endian.h ,
the functions are documented separately in
.Xr endian 3C .
More information on endianness and a general background on the topic can
be found in
.Xr byteorder 7 .
.Pp
The
.In endian.h
header defines the following macros:
.Bl -tag -width Ds
.It Sy LITTLE_ENDIAN
A constant used to indicate a little-endian integer.
It is always defined, regardless of the actual endianess of the underlying
platform.
This macro should be used to compare against the
.Sy BYTE_ORDER
macro.
.It Sy BIG_ENDIAN
A constant used to indicate a big-endian integer.
It is always defined, regardless of the actual endianess of the underlying
platform.
This macro should be used to compare against the
.Sy BYTE_ORDER
macro.
.It Sy PDP_ENDIAN
A constant used to indicate the endianness used for four byte values on
the PDP-11.
It is always defined, regardless of the actual endianess of the underlying
platform.
This macro should be used to compare against the
.Sy BYTE_ORDER
macro.
.It Sy BYTE_ORDER
The value of the
.Sy BYTE_ORDER
macro will be one of
.Sy LITTLE_ENDIAN
or
.Sy BIG_ENDIAN .
At this time, no supported architectures use the byte order indicated by
the
.Sy PDP_ENDIAN
macro.
.Pp
To determine the byte order of a system, one may compare the
.Sy BYTE_ORDER
to one of the aforementioned macros.
.El
.Pp
In addition to the routines provided by this header, standardized
functions may be found in
.Xr byteorder 3C .
The header
.Xr types.h 3HEAD
also defines additional pre-processor symbols to determine the current
endianness of the system.
.Sh INTERFACE STABILITY
.Sy Committed
.Sh SEE ALSO
.Xr byteorder 3C ,
.Xr endian 3C ,
.Xr types.h 3HEAD ,
.Xr attributes 7 ,
.Xr byteorder 7
